import { defineStore } from 'pinia'

export const useCartStore = defineStore({
    id: 'cart',
    state: () => {
        return {
            cartList: [],// 购物车数据
            select: [],// 选中的商品(承载选中的goods_id)

        }

    },

    getters: {
        // 全选 选中数组的长度等于购物车数组总长度
        isChecked() {
            return this.select.length == this.cartList.length;

        },
        // 总价和数量
        total() {
            let total = {
                price: 0,
                number: 0,

            }

            // indexOf() 如果未找到该值，则 indexOf() 方法返回 -1。
            // this.orderlist = [];
            this.cartList.forEach(v => {
                if (this.select.indexOf(v.goods_id) != -1) {
                    total.price += v.price  * v.cart_number;
                    total.number = this.select.length;

                    // this.orderlist.push({
                    //     number: v.cart_number,
                    //     id: v.goods_id
                    // })

                }

            })
            return total;

        }

    },

    actions: {
        // 一旦进入页面就会执行action,会往里面push goods_id，会造成select.length不对，即已选数量不对
        // 循环数组，增加一个check
        addCart(cart) {
            // 每次进来赋空
            this.select = [];
            cart.forEach(v => {
                v['check'] = true;
                this.select.push(v.goods_id);

            })
            this.cartList = cart;

        },
// 方法
        // 全选
       
        All() {
            this.select = this.cartList.map(v => {
                v['check'] = true;
                return v.goods_id;

            })

        },

        // 全不选

        unAll() {
            this.cartList.forEach(v => {
                v['check'] = false;
            })
            this.select = [];

        },

        // 单选传index,接受index,在购物车数组通过下标找到goods_id，将select中对应goods_id移除掉

        itemChecked(index) {
          // 当前商品点击的goods_id
            let id = this.cartList[index].goods_id;
            // 去检查select中有没有
            let idx = this.select.indexOf(id);
            if (idx > -1) {

                // 有这个goods_id，是选中状态，点击后改为不选
                this.cartList[index].check = false;
                // 将select中这个goods_id移除掉
                this.select.splice(idx, 1);

            }

            else {
                // 没有这个goods_id
                this.cartList[index].check = true;
                // 给select中添加这个goods_id
                this.select.push(id);



            }

        }

    }

})

